[LINQ] Master–Detail Same Record (I)

Posted by JTorrecilla on Geeks with Blogs See other posts from Geeks with Blogs or by JTorrecilla
Published on Wed, 16 Feb 2011 21:36:04 GMT Indexed on 2011/02/16 23:26 UTC
Read the original article Hit count: 150

Filed under:

PROBLEM

Firstly, I am working on a project based on LINQ, EF, and C# with VS2010.

The following Table shows what I have and what I want to show.

Header
C1 C2 C3
1 P1 01/01/2011
2 P2 01/02/2011
Details
1 1 D1
2 1 D2
3 1 D3
4 2 D1
5 2 D4
Expected Results
1 P1 01/01/2011 D1, D2, D3
2 P2 01/02/2011 D1,D4

 

IDEAS

At the begin I got 3 possible ways:

- Doing inside the DB:  It could be achieved from DB with a CURSOR in a Stored Procedure.

- Doing from .NET with LOOPS.

- Doing with LINQ (I love it!!)

FIRST APROX

Example with a simple CLASS with a LIST:

With and Employee Class that acts as Header Table:

   1: public class Employee 
   2: {
   3:     public Employee () { }
   4:     public Int32 ID { get; set; }
   5:     public String FirstName{ get; set; }
   6:     public String LastName{ get; set; }
   7:     public List<string> Numbers{ get; set; } // Acts as Details Table
   8: }
We can show all numbers contained by Employee:
   1: List<Employee > listado = new List<Employee >();
   2: //Fill Listado
   3: var query= from Employee em in listado
   4:     let Nums= string.Join(";", em.Numbers)
   5:     select new { 
   6:     em.Name,
   7:     Nums
   8:     };

The “LET” operator allows us to host the results of “Join” of the Numbers List of the Employee Class.

A little example.

ASAP I will post the second part to achieve the same with Entity Framework.

Best Regards

© Geeks with Blogs or respective owner